package io.github.echarts.coordinator;

import io.github.echarts.model.geometry.Rectangle;

import java.util.HashMap;
import java.util.Map;

/**
 * 渲染上下文
 * 存储渲染过程中需要共享的数据和状态
 */
public class RenderContext {
    /** 图表宽度 */
    private final int width;
    
    /** 图表高度 */
    private final int height;
    
    /** 坐标系信息映射表 */
    private final Map<String, CoordinateSystemInfo> coordinateSystemInfoMap;
    
    /**
     * 构造函数
     * 
     * @param width 图表宽度
     * @param height 图表高度
     */
    public RenderContext(int width, int height) {
        this.width = width;
        this.height = height;
        this.coordinateSystemInfoMap = new HashMap<>();
    }
    
    /**
     * 注册坐标系信息
     * 
     * @param id 坐标系ID
     * @param info 坐标系信息
     */
    public void registerCoordinateSystem(String id, CoordinateSystemInfo info) {
        coordinateSystemInfoMap.put(id, info);
    }
    
    /**
     * 获取坐标系信息
     * 
     * @param id 坐标系ID
     * @return 坐标系信息，如果不存在则返回null
     */
    public CoordinateSystemInfo getCoordinateSystemInfo(String id) {
        return coordinateSystemInfoMap.get(id);
    }
    
    /**
     * 获取图表宽度
     * 
     * @return 图表宽度
     */
    public int getWidth() {
        return width;
    }
    
    /**
     * 获取图表高度
     * 
     * @return 图表高度
     */
    public int getHeight() {
        return height;
    }
    
    /**
     * 坐标系信息类
     * 存储坐标系的布局信息等
     */
    public static class CoordinateSystemInfo {
        /** 坐标系布局区域 */
        private final Rectangle area;
        
        /**
         * 构造函数
         * 
         * @param area 坐标系布局区域
         */
        public CoordinateSystemInfo(Rectangle area) {
            this.area = area;
        }
        
        /**
         * 获取坐标系布局区域
         * 
         * @return 坐标系布局区域
         */
        public Rectangle getArea() {
            return area;
        }
    }
} 